File systems utilize data structures, also referred to as the file system on-disk format, to persist, i.e., maintain and organize, data to stable storage, e.g., a volume, disk, hard drive, etc. File systems access the data and interpret these data structures to store and retrieve data for users and applications, or procedures or computer programs, e.g., when executing software instructions or computer code.
Error scanning is performed for the volumes of a file system in order to proactively identify corruptions in their data structures. A proactive error scanning process involves generating snapshots for volumes of the file system and performing actions on the data structures in the volume snapshots to identify existing corruptions. In embodiments the proactive error scanning process executes while the file system volumes remain online and, therefore, accessible to other users and applications.
However, there are issues introduced by the proactive error scanning process' use of a volume snapshot. For example, the copy-on-write mechanism typically employed to generate and maintain the snapshot view of a volume is expensive in terms of I/O, i.e., input/output, processing costs. This in turn imposes performance penalties on the I/O that applications are attempting to perform with the underlying real volume while the proactive error scanner uses the volume snapshot.
Moreover, as applications perform I/O operations on the real volume during proactive error scanning the copy-on-write mechanism saves the changed data blocks away into a difference, i.e., diff, area on the volume. As the number of changed data blocks grows the volume space required for the diff area increases. This can negatively impact overall file system performance as it has increasingly less free volume space for application usage. Too, if the diff area becomes too large older snapshots will have to be deleted to make room for the newer changed blocks. In some cases, the snapshot used by the proactive error scanner may itself have to be deleted and the proactive error scanner will have to be prematurely terminated and then subsequently restarted again from the beginning, utilizing valuable system time and resources.
Thus it is desirable to minimize, i.e., scope, the snapshot of the volume used by the proactive error scanner to those sections of the volume that are actually utilized by the proactive error scanner. It is further desirable to determine the scope of the volume snapshot for use by proactive error scanner in a timely manner in order to further minimize volume error detection processing effects on the file system's performance and resources.